//入口函数
$NG.AllReady(
    function (page, { useValuesChange, useClick, useUpdateRow, useUpdateRows, useDataIndexChange, useBeforeClick }) {
        //获取容器数据和表单数据
        var mstform = $NG.getCmpApi("p_form_zbhy"); //获取表头数据
        var BD = $NG.getCmpApi("p_form_section"); //获取表体数据 标段
        var WLMX = $NG.getCmpApi("p_form_wlmx"); //获取表体数据 物料明细
        var YQGYS = $NG.getCmpApi("p_form_supply"); //获取表体数据 邀请供应商
        var PBZB = $NG.getCmpApi("p_form_pbzb"); //获取表体数据 评标指标
        var ZBWJ = $NG.getCmpApi("p_form_zbwj"); //获取表体数据 招标文件
        var toolbar = $NG.getCmpApi("toolbar_top");
        var tabPanel = document.getElementsByClassName("ant-tabs-tab"); //获取所有tab页元素
        var YQGYSdtoolbar1 = $NG.getCmpApi("toolbar_p_form_supply");
        $NG.getCmpApi("toolbar_p_form_zbwj").getItem("import").setHidden();
        $NG.getCmpApi("toolbar_p_form_pbzb").getItem("import").setHidden();
        // $NG.getCmpApi("toolbar_p_form_zbwj").getItem("attachment").setHidden();
        $NG.getCmpApi("toolbar_p_form_pbzb").getItem("attachment").setHidden();
        $NG.getCmpApi("toolbar_p_form_wlmx").getItem("attachment").setHidden();
        $NG.getCmpApi("toolbar_p_form_supply").getItem("attachment").setHidden();
        const storedData = localStorage.getItem("selectedUSourceData");
        const toolbar_dgrid = $NG.getCmpApi("toolbar_p_form_wlmx");

        function getCookie(name) {
            let cookieArray = document.cookie.split('; ');
            for (let i = 0; i < cookieArray.length; i++) {
                let [cookieName, cookieValue] = cookieArray[i].split('=');
                if (cookieName === name) {
                    return decodeURIComponent(cookieValue);
                }
            }
            return null;
        }

        toolbar.insert({
            id: "toZbgg",
            text: "跳转招标公告",
            iconCls: "icon-InsertRow",
        });
        useClick(() => {
            const phid = mstform.getItem("u_gg_phid").getValue()
            if (phid) {
                //读取token
                const token = getCookie("i86.1P2tokenkey")
                $NG.open(`http://nginx.clouddev.hisense.com/PMS/CRM/CntTenderBulletin/CntTenderBulletinEdit?otype=view&id=${phid}&Authorization=${token}&AppTitle=%E6%8B%9B%E6%A0%87%E5%85%AC%E5%91%8A-%E6%9F%A5%E7%9C%8B`)
            }
            else {
                $NG.alert("请审核通过自动生成招标公告后点击！")
            }
        }, "toZbgg")
        if (toolbar_dgrid) {
            toolbar_dgrid.insert({
                id: "template_download",
                text: "模板下载",
                iconCls: "icon-InsertRow",
            });
            // 增加匹配物料
            toolbar_dgrid.insert({
                id: "user_match",
                text: "匹配物料",
                iconCls: "icon-InsertRow",
            });
            toolbar_dgrid.insert({
                id: "get_price",
                text: "获取价格库结果",
                iconCls: "icon-InsertRow",
            });
            useClick(async function ({ args }) {
                // const url = "http://nginx.clouddev.hisense.com/report/index.html#/tableDesign/TableManager/preview?AppTitle=%E6%8A%A5%E8%A1%A8%E9%A2%84%E8%A7%88&defaultSheet=0&name=%E5%AE%9A%E4%BB%B7%E6%96%B9%E6%A1%88%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF&menucode=968d9a45-9772-46b9-9c6c-f3d9e56a6676";
                // // 打开报表并传递参数
                // $NG.open(url, { AppTitle: "报表查看" });
                const queryParams = {
                    // id: "8570000000000001",
                    // otype: "view",
                    // busType: "EFORM9000000201",
                    // isSso: "1",
                    rep_id: "8570000000000023",
                    defaultSheet: 0,
                    name: '定价方案导入模板',
                    menucode: '968d9a45-9772-46b9-9c6c-f3d9e56a6676',
                    AppTitle: "模板下载",
                }; // 构造查询字符串

                const queryString = new URLSearchParams(queryParams).toString();
                const url = `${origin}/report/index.html#/tableDesign/TableManager/preview?${queryString}`;
                console.log(url);

                // 打开报表并传递参数
                $NG.open(url, { AppTitle: "模板下载" });
            }, "template_download");
        }
        useClick(async function ({ args }) {
            let rows = WLMX.getRows();
            console.log(rows);
            const checkedCount = rows.filter((item) => item.checked === true).length;
            const price = WLMX.getSelectedRow().u_item_no;
            // 验证逻辑
            if (checkedCount !== 1 || price == "") {
                // 提示错误（根据实际需求选择提示方式）
                $NG.alert("请选择且只能选择一条数据！"); // 弹窗提示
                return 0; // 或者返回错误代码
            } else {
                // 验证通过继续后续操作
                $NG.external
                    .openNGHelp({
                        type: "NGMultipleHelp",
                        helpId: "prc_k",
                        valueField: "phid_itemdata",
                        labelField: "item_name",
                        clientSqlFilter: "phid_itemdata = " + price,
                    })
                    .then((data) => {
                        if (data.length > 1) {
                            $NG.alert("请选择其中一条数据，不可多选！");
                            return;
                        } else {
                            const newDataSource = rows.map((row) => {
                                // 只处理被选中的行
                                if (row.checked) {
                                    return {
                                        ...row, // 保留其他字段
                                        u_zbprc: data[0].origin.wsprc,
                                        u_zbprcvat: data[0].origin.hsprc,
                                        u_zbrate: data[0].origin.taxrate,
                                    };
                                }
                                return row; // 未选中的行保持原样
                            });
                            // WLMX.getSelectedRow().u_zbprc = data[0].origin.wsprc;
                            // WLMX.getSelectedRow().u_zbprcvat = data[0].origin.hsprc;
                            // WLMX.getSelectedRow().u_zbrate = data[0].origin.taxrate;
                            console.log(data, newDataSource);
                            WLMX.clearRows().then(() => {
                                WLMX.addRows(newDataSource);
                            });

                            WLMX.refreshView();
                        }
                    });

                console.log("验证通过");
                return 1; // 或者返回成功代码
            }
        }, "get_price");

        mstform.getItem("u_skdw").setValue({
            value: 8570000000000018,
            label: "青岛海信网络科技股份有限公司",
        });

        useValuesChange(({ args }) => {
            // console.log(`fg3_unitaccount.phid_ent = '${mstform.getItem("u_skdw")?.getValue() || ""}'`);
            console.log(args[0].u_skdw.origin.OrgId);

            khBank(args[0].u_skdw.origin.OrgId);
        }, "p_form_zbhy.u_skdw");
        useValuesChange(({ args }) => {
            // console.log(`fg3_unitaccount.phid_ent = '${mstform.getItem("u_skdw")?.getValue() || ""}'`);
            console.log(args);
            mstform.getItem('u_bank_name').setValue(args[0].u_kh_bank.origin.accountname)
            mstform.getItem('u_account').setValue(args[0].u_kh_bank.origin.accountno)

        }, "p_form_zbhy.u_kh_bank");

        useValuesChange(({args})=>{
            hidenDgrid3()
        },"p_form_zbhy.u_pbfs")

        useValuesChange(({args})=>{
            setu_swdyr()
        },"p_form_zbhy.u_kbfzr")
    

        useUpdateRows(({ args }) => {
            const rows = args[0]
            rows.forEach(item => {
                if (mstform.getItem("u_kbfzr").getValue()) {
                    item.u_bzr = mstform.getItem("u_kbfzr").getValue()
                    item.u_bzr_EXName = mstform.getItem("u_kbfzr").getText()
                }
            })
            ZBWJ.refreshView()
        }, "p_form_zbwj")

        function setu_swdyr(){
            if(!mstform.getItem("u_kbfzr").getValue()) return 
            mstform.getItem("u_swdyr").setValue({
                label:mstform.getItem("u_kbfzr").getText(),
                value:mstform.getItem("u_kbfzr").getValue()
            })
        }

        // 隐藏明细标签
        hidenDgrid3()
        function hidenDgrid3(){
            if(mstform.getItem("u_pbfs").getValue() == '3'){
                $NG
                .getCompMap()
                .get("__Tabs__")[0]
                .getApi()
                .updateItems((innerItems, activeKey) => {
                    console.log(`innerItems`,innerItems);
                    return [...innerItems.filter((item) => item.key !== "TabPage3")];
                });
            } else {
                $NG
                .getCompMap()
                .get("__Tabs__")[0]
                .getApi()
                .updateItems((innerItems, activeKey) => {
                    console.log(`innerItems`,innerItems);
                    return [...innerItems.filter((item) => true)];
                });
            }
        }

        khBank(8570000000000014);
        function khBank(params) {
            console.log(params);

            if (!mstform.getItem("u_skdw")) return;
            var u_skdw = mstform.getItem("u_skdw").getValue() || "";
            console.log("u_skdw_filter");
            // console.log(u_skdw);

            $NG.updateUI((updater) => {
                const fields = ["u_kh_bank"];
                fields.forEach((field) => {
                    // $NG.getPageUI();
                    // 根据组件目录设置路径，可能存在
                    // fieldSetForm
                    // PCFieldSetPanelGroup[i][field]
                    updater.fieldSetForm.p_form_zbhy.PCFieldSetPanelGroup3[field].setProps({
                        // hidden: true, //隐藏
                        // required: true, //必输
                        // disabled: true, //只
                        clientSqlFilter: `fc3_outer_acc_mst.phid_open_org ='${params}'`, //过滤条件

                        // placeholder: "请选择", //输入框字段加提示语
                        // data: [{ value: "01", label: "实施外包用工" }], //下拉过滤
                    });
                });
            });
        }

        const checkBiaoshiInUrl = () => {
            const hash = window.location.hash.substring(1);
            const [path, query] = hash.split("?");
            if (query) {
                const urlParams = new URLSearchParams(query);
                return urlParams.has("biaoshi");
            }

            return false;
        };

        // 调用检测
        if (checkBiaoshiInUrl()) {
            console.log("URL 中包含 biaoshi 字段");
            $NG.updateUI((updater) => {
                const fields = ["u_kz_prcvat", "u_kz_tax", "u_kz_amtvat", "u_ck_prcvat", "u_ck_amtvat"];
                fields.forEach((field) => {
                    updater.editGrid.p_form_wlmx[field].setProps({
                        disabled: false,
                    });
                });
            });
            $NG.updateUI((updater) => {
                const fields = ["u_item_no", "u_item_name", "u_unit", "u_ncg_qty", "u_spec", "u_sj_spec", "itemno", "itemname", "msunit", "spec", "u_wlfl", "u_zbqty", "u_yztj_prc", "u_zbprc", "u_zbprcvat", "u_zbrate", "u_zbamtvat", "u_zbamt", "u_remarks", "u_source_table", "u_source_id"];
                fields.forEach((field) => {
                    updater.editGrid.p_form_wlmx[field].setProps({
                        disabled: true,
                    });
                });
            });
            $NG.updateUI((updater) => {
                const fields = ["u_ncg_qty", "u_yztj_prc"];
                fields.forEach((field) => {
                    updater.editGrid.p_form_wlmx[field].setProps({
                        disabled: true,
                    });
                });
            });
            const hash = window.location.hash.substring(1);
            const [path, query] = hash.split("?");
            if (query) {
                const urlParams = new URLSearchParams(query);
                urlParams.delete("biaoshi");
                const newHash = path + (urlParams.toString() ? `?${urlParams.toString()}` : "");
                window.history.replaceState({}, "", window.location.pathname + "#" + newHash);
            }
        }
        if (storedData) {
            const parsedData = JSON.parse(storedData);
            // 获取行数
            console.log(parsedData);
            mstform.getItem('u_kbfzr').setValue({
                value: parsedData[0].u_director_phid,
                label: parsedData[0].u_director_phid_EXName
            })

            const gridCount = parsedData.length;

            let gridArr = []; // 初始化数组

            // 将 execServer 封装为 Promise
            function fetchData(item) {

                return new Promise((resolve, reject) => {
                    $NG.execServer("getDjxqcByPhid", { phid: item.u_source_id, resource_table: `'${item.u_source_table}'` }, function (res) {
                        try {
                            console.log("进入功能扩展getDjxqcByPhid1");
                            if (res.count > 0) {
                                const data = JSON.parse(res.data)[0].extendObjects;
                                console.log(data);
                                console.log(`下推数据`, item);
                                let gridObj = {
                                    u_source_id: data.source_id,
                                    u_source_table: data.source_table,
                                    itemid: data.ps_resbase_phid,
                                    u_item_no: data.item_phid,
                                    u_item_no_EXName: data.item_no,
                                    u_item_name: data.item_name,
                                    u_unit: data.unit_phid,
                                    u_unit_EXName: data.unit_name,
                                    u_spec: data.spec,
                                    u_sj_spec: data.spec,
                                    u_wlfl: data.resbs_phid,
                                    u_wlfl_EXName: data.resbs_name,
                                    u_ncg_qty: data.u_qty,
                                    u_yztj_prc: data.u_vat_prc,
                                    u_pnum: data.u_sj_no,
                                    u_pname: data.u_sj_name,
                                    u_is_yztj: item.u_sfyztj == '业主推荐' ? '1' : '2'
                                };

                                resolve(gridObj);
                            } else {
                                console.log("功能扩展暂无数据");
                                resolve(null);
                            }
                        }

                        catch (error) {
                            console.error("功能扩展报错:", error);
                            reject(error);
                        }
                    });

                });
            }

            // 执行所有异步请求
            async function fetchAllData() {
                try {
                    let results = await Promise.all(parsedData.map(fetchData));
                    gridArr = results.filter(Boolean); // 过滤掉 null
                    // 调用新增表体行数据的函数
                    if (gridArr.length > 0) {
                        WLMX.addRows(gridArr);
                    } else {
                        console.warn("未能添加任何数据");
                    }
                    // 清除 LocalStorage 数据
                    localStorage.removeItem("selectedUSourceData");
                    console.log("LocalStorage 已清除");
                } catch (error) {
                    console.error("获取数据出错:", error);
                }
            }
            fetchAllData(); // 调用异步方法
        } else {
            console.log("LocalStorage 中没有数据");
        }

        YQGYSdtoolbar1.insert({
            id: "add",
            text: "供应商引入",
            iconCls: "icon-New",
        });
        useClick(async function ({ args }) {
            if (mstform.getItem("u_wlxl").getValue().length > 0) {
                console.log(mstform.getItem("u_wlxl").getValue());
                YQGYSadd();
            } else {
                tabPanel[0].click();
                $NG.alert("请先选择物料明细表");
            }
        }, "add");
        useDataIndexChange(({ args }) => {
            getItemdataByPhid(args[0]);
        }, "u_item_no");

        //////////////////////////////////////////////////mstform//////////////////////////////////////////////////

        const toolbar_supply = $NG.getCmpApi("toolbar_p_form_supply");
        const toolbar_pbzb = $NG.getCmpApi("toolbar_p_form_pbzb");
        const toolbar_zbwj = $NG.getCmpApi("toolbar_p_form_zbwj");
        const toolbar_section = $NG.getCmpApi("toolbar_p_form_section");
        const toolbars = [
            { toolbar: toolbar_supply, items: ["imp"] },
            { toolbar: toolbar_pbzb, items: ["imp"] },
            { toolbar: toolbar_zbwj, items: ["imp"] },
            { toolbar: toolbar_section, items: ["imp"] },
        ];
        toolbars.forEach(({ toolbar, items }) => {
            if (toolbar) {
                items.forEach((item) => toolbar.getItem(item)?.setHidden()); //setHidden：隐藏按钮，setDisabled：禁用按钮
            }
        });

        useBeforeClick(async function ({ args }) {
            let flag = true;
            if (mstform.getItem("u_zbfs").getValue() == "1289") {
                console.log(true, "11111111");
                console.log(YQGYS.getRows().length, "11111111");
                if (YQGYS.getRows().length) {
                } else {
                    flag = false;
                    $NG.alert("您的招标方式是邀标,需要填写邀请供应商明细表");
                }
            }
            //保存钩子
            console.log(WLMX.getRows(), "WLMX.getRows();");
            // let flagYxsll = mstform.getItem("u_yxsll").getValue();
            // console.log(flagYxsll, "flagYxsll");
            let rows = WLMX.getRows();
            let total = 0;
            rows.forEach((element) => {
                if (element.u_ncg_qty) {
                    total += parseFloat(element.u_ncg_qty);
                }
            });

            // if (total > 0 || flagYxsll == "1") {
            // } else {
            //     flag = false;
            //     $NG.alert("物料数量小于0");
            // }
            let rows2 = PBZB.getRows();
            let total2 = 0;

            rows2.forEach((element) => {
                console.log(element, "element");
                if (element.u_bzf) {
                    total2 += parseFloat(element.u_bzf);
                }
            });
            // if (total2 == 100) {
            // } else {
            // 	$NG.alert("指标数量总和数量应等于100");
            // 	flag = false;
            // }

            return flag; // 取消向下执行
        }, "save");

        //////////////////////////////////////////////////mstform//////////////////////////////////////////////////

        $NG.updateUI((updater) => {
            updater.fieldSetForm.p_form_zbhy.u_ycdjlx?.setProps({
                hidden: true,
            });
        });

        //选物料带出单位等
        function getItemdataByPhid(item) {
            const phid = item.u_item_no;
            $NG.execServer("getItemdataByPhid", { phid }, (res) => {
                if (res.count == 0) return;
                const data = JSON.parse(res.data)[0].extendObjects;
                console.log(data);

                item.u_item_name = data.itemname;
                item.u_unit = data.msunit_phid;
                item.u_unit_EXName = data.msunit_name;
                item.u_spec = data.spec;
                item.u_wlfl = data.res_bs_phid;
                item.u_wlfl_EXName = data.res_bs_name;
                WLMX.refreshView();
            });
        }
        useValuesChange(({ args }) => {
            console.log(args[0]);
            const cno = args[0].u_zblx.origin.c_no;
            $NG.updateState((updater) => {
                updater.data.p_form_zbhy.setProps({
                    u_ycdjlx: cno,
                });
            });
        }, "p_form_zbhy.u_zblx");

        if (mstform.getItem("u_is_jnbzj").getValue() == 1) {
            $NG.updateUI((updater) => {
                const fields = ["u_tender_bond", "u_zffs", "u_skdw", "u_kh_bank"];
                fields.forEach((field) => {
                    updater.fieldSetForm.p_form_zbhy[field].setProps({
                        required: true,
                    });
                });
            });
        }
        useValuesChange(({ args }) => {
            console.log(args[0].u_is_jnbzj.value);
            if (args[0].u_is_jnbzj.value == 1) {
                $NG.updateUI((updater) => {
                    const fields = ["u_tender_bond", "u_zffs", "u_skdw", "u_kh_bank"];
                    fields.forEach((field) => {
                        updater.fieldSetForm.p_form_zbhy[field].setProps({
                            required: true,
                            disabled: false,
                        });
                    });
                });
            } else {
                $NG.updateUI(function (updater, state) {
                    const fields = ["u_tender_bond", "u_zffs", "u_skdw", "u_kh_bank"];
                    console.log(updater);

                    fields.forEach((field) => {
                        updater.fieldSetForm.p_form_zbhy[field].setProps({
                            required: false, //required是否必输
                            disabled: true,
                        });
                    });
                });
            }
        }, "p_form_zbhy.u_is_jnbzj");
        useValuesChange(({ args }) => {
            console.log(args[0].u_kzjbj);
            console.log();

            if (args[0].u_kzjbj == 1) {
                $NG.updateUI((updater) => {
                    const fields = ["u_kz_prcvat", "u_kz_tax", "u_kz_amtvat"];
                    fields.forEach((field) => {
                        updater.editGrid.p_form_wlmx[field].setProps({
                            required: true, //必输
                        });
                    });
                });
                $NG.updateUI((updater) => {
                    const fields = ["u_ck_prcvat", "u_ck_amtvat"];
                    fields.forEach((field) => {
                        updater.editGrid.p_form_wlmx[field].setProps({
                            required: false, //必输
                        });
                    });
                });
            } else if (args[0].u_kzjbj == 2) {
                $NG.updateUI((updater) => {
                    const fields = ["u_ck_prcvat", "u_ck_amtvat"];
                    fields.forEach((field) => {
                        updater.editGrid.p_form_wlmx[field].setProps({
                            required: true,
                        });
                    });
                });
                $NG.updateUI((updater) => {
                    const fields = ["u_kz_prcvat", "u_kz_tax", "u_kz_amtvat"];
                    fields.forEach((field) => {
                        updater.editGrid.p_form_wlmx[field].setProps({
                            required: false,
                        });
                    });
                });
            }
        }, "p_form_zbhy.u_kzjbj");

        // const u_zbdw = mstform.getItem("u_zbdw"); //招标单位 (当前默认登录人组织)
        let user = $NG.getUser(); //登陆人信息
        if (page.oType == "add") {
            $NG.updateState((updater) => {
                updater.data.p_form_zbhy.setProps({
                    u_sqperson: {
                        label: user.userName,
                        value: user.userID,
                    },
                });
            });
        }

        var tabPanel = document.getElementsByClassName("ant-tabs-tab"); //获取所有tab页元素
        var tabP = document.getElementsByClassName("ant-tabs-nav-list")[0]; //获取所有tab页元素
        if (mstform.getValues().wf_flag == 4) {
            tabPanel[1].style.display = "none"; // 隐藏
        }
        if (page.oType == "edit") {
            JTpl();
            $NG.updateUI((updater, state) => {
                if (page.Id) {
                    updater.editGrid.p_form_wlmx.u_section.setProps((e) => ({
                        ...e,
                        editor: {
                            ...e.editor,
                            required: true,
                            clientSqlFilter: { phid: page.Id },
                        },
                    }));
                }
            });

            function Fun() {
                const pb90Response = mstform.getItem("u_is_dbdzb").getValue();
                if (pb90Response == 0 && tabPanel[4].innerText == "标段") {
                    tabPanel[4].style.display = "none"; // 隐藏
                }
                if (pb90Response == 1 && tabPanel[4].innerText == "标段") {
                    tabPanel[4].style.display = "none"; // 隐藏
                    setTimeout(() => {
                        tabP.insertBefore(tabPanel[4], tabP.firstChild);
                        setTimeout(() => {
                            tabPanel[0].style.display = "block"; // 显示
                            if (page.oType == "edit") {
                                $NG.updateUI((updater) => {
                                    const fields = ["u_section"];
                                    fields.forEach((field) => {
                                        updater.editGrid.p_form_wlmx[field].setProps({
                                            hidden: false, //隐藏
                                            // required: true, //必输
                                            // disabled: true, //只读
                                        });
                                    });
                                });
                            }
                        }, 200);
                    }, 200);
                }
            }
            Fun();
        }
        if (page.oType == "add") {
            // 初始化隐藏标段
            $NG.updateUI((updater) => {
                const fields = ["u_section"];
                fields.forEach((field) => {
                    updater.editGrid.p_form_wlmx[field].setProps({
                        hidden: true, //隐藏
                        // required: true, //必输
                        // disabled: true, //只读
                    });
                });
            });

            try {
                mstform.getItem("u_isbm").setValue(1);
            } catch (error) { }
            {
                /**
                 *@default: 初始化
                 */
                JTpl();
                tabPanel[4].style.animation = "none";
                tabPanel[4].style.display = "none";
                if ($NG.getCmpApi("p_form_zbhy")) {
                    BD.clearRows();
                    getPtInfoByPhid();
                    if (user) {
                        //带出默认用户登录的组织
                        $NG.execServer("GetHrInfo", { id: user.userID }, function (res) {
                            const datas = JSON.parse(res.data)[0].extendObjects;
                            //帮助字段赋值
                            $NG.updateState((updater) => {
                                // 帮助字段
                                updater.data.p_form_zbhy.setProps({
                                    u_zbdw: {
                                        value: datas.org_phid,
                                        label: datas.org_oname,
                                    },
                                });
                            });
                        });
                    }
                }
                mstform.getItem("u_fill_dt").setValue(new Date());
            }
        }

        /**
         *@license:检测工程项目带出项目信息
         */
        useValuesChange(({ args }) => {
            getPtInfoByPhid();
            console.log("是否触发phid.pc");
        }, "p_form_zbhy.phid_pc");
        /**
         *@license:监听物料小类变化
         */
        useValuesChange(({ args }) => {
            JTpl();
        }, "p_form_zbhy.u_wlxl");
        /**
         *@license:监听定价项目编号
         */
        useValuesChange(({ args }) => {
            // var mstform = $NG.getCmpApi("p_form_zbhy"); //获取表头数据
            console.log(args[0].u_djsqdh.origin, "u_djsqdh");
            const {
                bill_dt = null, //定价申请时间
                bill_name = null, //定价申请名称
                bill_no = null, //定价清单编号
                pc = null, //项目名称
                phid = null, //定价申请单主键
                phid_pc = null, //项目主键
                u_bus_no = null, //商机编号
                u_sj_name = null, //商机名称
            } = args[0].u_djsqdh.origin;

            mstform.getItem("phid_pc").setValue({ label: pc, value: phid_pc });
            //   if (pc) {
            $NG.updateState((updater) => {
                updater.data.p_form_zbhy.setProps({
                    u_sjh: u_bus_no,
                    u_sjmc: u_sj_name,
                });
            });
            //   }
        }, "p_form_zbhy.u_djsqdh");

        function validateDates() {
            const { u_end_dt, u_start_dt, u_isbm } = mstform.getValues();
            if (!u_isbm) {
                return true;
            }
            if (u_end_dt && u_start_dt) {
                return !u_isbm || (!isNaN(new Date(u_start_dt).getTime()) && !isNaN(new Date(u_end_dt).getTime()) && new Date(u_end_dt) > new Date(u_start_dt));
            } else {
                return true;
            }
        }
        // let input = "8570000000000004,8570000000000008";
        // let output = input.replace(/,/g, "|");
        let reqTimeLock = 0;
        let timeMax = 0;
        //去重
        function removeDuplicatesByKeys(arr) {
            const uniqueMap = new Map();
            for (const obj of arr) {
                // 生成一个由 ItemName、PhidResbs 和 PhidMsunit 组合而成的唯一键
                const key = `${obj.ItemName}-${obj.Spec}-${obj.PhidMsunit}`;
                if (!uniqueMap.has(key)) {
                    // 如果该键还未存在于 Map 中，则将对象存入
                    uniqueMap.set(key, obj);
                }
            }
            // 将 Map 中的值（即去重后的对象）提取到一个新数组中
            return Array.from(uniqueMap.values());
        }
        useBeforeClick(({ args }) => {
            $NG.message("正在匹配 0.1% 请耐心等待~~~");
            window.stertNum = 0;
            window.endNum = 0;
            window._list = [];
            reqTimeLock = setInterval(() => {
                if (window.stertNum == window.endNum) {
                    //可以请求了
                    $NG.message(`正在匹配 ${(stertNum / (WLMX.getRows().length * 2.5)).toFixed(4) * 100}% 请耐心等待~~~`);
                    const list = removeDuplicatesByKeys(window._list);
                    console.log(`数据准备就绪：`, list);
                    if (list.length == 0) {
                        $NG.alert("匹配完成！ 100%");
                    } else {
                        getWlRequest(list);
                    }
                    clearInterval(reqTimeLock);
                } else {
                    window.endNum = window.stertNum;
                }
            }, 1000);
            matchingMaterial();
        }, "user_match");
        //匹配物料主请求
        async function getWlRequest(list) {
            const response = await fetch("http://nginx.clouddev.hisense.com/sd/interior/createResourceFileSync", {
                method: "POST",
                headers: {
                    "Content-Type": "application/json", // 设置请求头
                },
                body: JSON.stringify(list),
            });
            const res = await response.json();
            console.log(`请求数据`, res);
            if (res.IsOk) {
                //新增成功
                matchingMaterial(); //重新匹配
                [1, 2, 3].forEach((item) => {
                    $NG.message(`正在重新匹配，请勿操作等待提示完成！！！%`);
                });
                timeMax = setTimeout(() => {
                    $NG.alert("匹配超时！！！");
                }, 1000 * 90);
                $NG.alert("匹配完成！ 100%");
                clearTimeout(timeMax);
            } else {
                if (res.data == "批量新增失败，入参为空！") {
                    $NG.alert("匹配完成，入参为空！");
                } else {
                    $NG.alert("匹配错误！");
                }
            }
        }

        //匹配物料
        function matchingMaterial() {
            const d1arr = WLMX.getRows();
            d1arr.forEach((item, index) => {
                if (!(String(item.u_item_name) || "").trim() || !(String(item.u_unit) || "").trim() || !(String(item.u_spec) || "").trim() || !(String(item.u_item_sub) || "").trim()) {
                } else {
                    $NG.execServer(
                        "getItemDataByName",
                        {
                            itemname: `'${item.u_item_name}'`,
                            spec: `'${item.u_spec}'`,
                            msunit: `'${item.u_unit}'`,
                        },
                        function (res) {
                            console.log(item.u_item_name, item.u_spec, item.u_unit, res);
                            window.stertNum += 1;
                            if (res.count > 0) {
                                const data = JSON.parse(res.data)[0].extendObjects;
                                console.log("编码查询", data, data.itemno);
                                item.u_item_no_EXName = data.itemno;
                                item.u_item_no = data.phid;
                                WLMX.refreshView();
                            } else {
                                $NG.execServer("getResBsByphid", { phid: item.u_item_sub }, (res2) => {
                                    window.stertNum += 1;
                                    const _data = JSON.parse(res2.data)[0].extendObjects;
                                    window._list.push({
                                        ItemName: item.u_item_name,
                                        PhidResbs: item.u_item_sub,
                                        PhidMsunit: item.u_unit,
                                        Spec: item.u_spec,
                                        ResBsCode: item.u_item_sub, // 假设 ResBsCode 是固定值，需根据实际情况调整
                                        ResourceType: _data.resource_type, // 假设资源类型是固定的
                                    });
                                });
                            }
                        }
                    );
                }
            });
        }

        function YQGYSadd() {
            $NG.external
                .openNGHelp({
                    type: "NGMultipleHelp", //NGMultipleHelp
                    helpId: "fc3_supply_copy", //帮助id
                    valueField: "phid",
                    labelField: "u_milestone_name", //显示字段
                    // clientSqlFilter: `REGEXP_LIKE(res, '(^|)857000000000000(8|4)(|$)')`
                    clientSqlFilter: `REGEXP_LIKE(res, '(^|)${mstform.getItem("u_wlxl").getValue().join("|")}(|$)')`,
                })
                .then((data) => {
                    //根据字段名称新增引入每一行
                    console.log(data, "data111111");
                    try {
                        if (Array.isArray(data) && data.length > 0) {
                            var gridArr = [];
                            for (var i = 0; i < data.length; i++) {
                                console.log(data[i], "row1数据");
                                var gridObj = {};

                                gridObj.u_dwbh = data[i].origin.compno; //单位编号
                                gridObj.u_dwmc = data[i].origin.phid; //单位phid
                                gridObj.u_dwmc_EXName = data[i].origin.compname; //单位名称;

                                gridArr.push(gridObj);
                            }

                            console.log("planadd gridArr:");
                            console.log(gridArr);
                            YQGYS.addRows(gridArr);
                            YQGYS.refreshView();
                        } else {
                            console.error("返回的数据无效或为空:", data);
                        }
                    } catch (error) {
                        console.error("处理数据时出错:", error);
                    }
                })
                .catch((error) => {
                    console.error("打开NGHelp时发生错误:", error);
                });
        }
        /**
         *@license:监听 报名结束时间
         */

        useValuesChange(({ args }) => {
            if (validateDates()) {
            } else {
                mstform.getItem("u_end_dt").setValue(null);
                $NG.alert("报名结束时间不能小于报名开始时间");
            }
        }, "p_form_zbhy.u_end_dt");
        /**
         *@license:监听 报名开始时间
         */
        useValuesChange(({ args }) => {
            if (validateDates()) {
            } else {
                mstform.getItem("u_start_dt").setValue(null);
                $NG.alert("报名开始时间不能大于报名结束时间");
            }
        }, "p_form_zbhy.u_start_dt");
        /**
         *@license:监听 是否报名
         */
        useValuesChange(({ args }) => {
            if (validateDates()) {
            } else {
                mstform.getItem("u_start_dt").setValue(null);
                $NG.alert("报名开始时间不能大于报名结束时间");
            }
        }, "p_form_zbhy.u_isbm");
        /**
                   *@license:招标方式
                  如果是邀标，则标段不可选同时邀请供应商必选1289
                   */
        useValuesChange(({ args }) => { }, "p_form_zbhy.u_zbfs");

        var u_kb_dt = mstform.getItem("u_kb_dt"); //开始投标时间
        var u_tbjz_dt = mstform.getItem("u_tbjz_dt"); //投标截至时间
        var u_bs_end_xz = mstform.getItem("u_bs_end_xz"); //标书下载截至时间
        var u_bs_start_xz = mstform.getItem("u_bs_start_xz"); //标书开始下载截至时间
        /**
         *@license:检测开标时间
         */
        useValuesChange(async ({ args }) => {
            const pb90Response = await new Promise((resolve, reject) => {
                resolve(mstform.getItem("u_is_dbdzb").getValue());
            });
            if (pb90Response == 1 && tabPanel[4].innerText == "标段") {
                // 加强校验预防暴力点击
                if (page.oType == "edit") {
                    $NG.updateUI((updater) => {
                        const fields = ["u_section"];
                        fields.forEach((field) => {
                            updater.editGrid.p_form_wlmx[field].setProps({
                                hidden: false, //隐藏
                                // required: true, //必输
                                // disabled: true, //只读
                            });
                        });
                    });
                }
                tabPanel[4].style.display = "block";
                tabP.insertBefore(tabPanel[4], tabP.firstChild); // 插入到 tab 列表的开头
            } else if (pb90Response == 0 && tabPanel[0].innerText == "标段") {
                if (page.oType == "edit") {
                    $NG.updateUI((updater) => {
                        const fields = ["u_section"];
                        fields.forEach((field) => {
                            updater.editGrid.p_form_wlmx[field].setProps({
                                hidden: false, //隐藏
                                // required: true, //必输
                                // disabled: true, //只读
                            });
                        });
                    });
                }
                tabPanel[0].style.display = "none";
                tabP.appendChild(tabPanel[0]); // 插入到 tab 列表的末尾
                tabPanel[0].click();
                BD.clearRows();
            }
        }, "p_form_zbhy.u_is_dbdzb");
        /**
         *@license:检测开标时间
         */
        useValuesChange(({ args }) => {
            //开始标时间
            let flag = checkDate(u_kb_dt.getValue());
            if (!flag && u_kb_dt.getValue()) {
                $NG.alert("开标时间不能小于今天");
                u_kb_dt.setValue("");
            }
            if (u_tbjz_dt.getValue() && u_kb_dt.getValue()) {
                if (!BidDateVerification()) {
                    $NG.alert("投标截至时间不能大于或等于开标时间");
                    u_kb_dt.setValue("");
                }
            }
        }, "p_form_zbhy.u_kb_dt");

        /**
         *@license:检测投标截止时间
         */
        useValuesChange(({ args }) => {
            //投标截至时间
            debugger;
            u_kb_dt.setValue(args[0].u_tbjz_dt);
            let flag = checkDate(u_tbjz_dt.getValue());
            if (!flag && u_tbjz_dt.getValue()) {
                $NG.alert("投标截至时间不能小于今天");
                u_tbjz_dt.setValue("");
            }
            if (u_tbjz_dt.getValue() && u_kb_dt.getValue()) {
                if (!BidDateVerification()) {
                    $NG.alert("投标截至时间不能大于或等于开标时间");
                    u_tbjz_dt.setValue("");
                }
            }
        }, "p_form_zbhy.u_tbjz_dt");
        /**
         *@license:检测标书开始下载时间
         */
        useValuesChange(({ args }) => {
            //标书开始时间
            let flag = checkDate(u_bs_start_xz.getValue(), true);
            if (!flag && u_bs_start_xz.getValue()) {
                $NG.alert("表述开始时间不能小于今天");
                u_bs_start_xz.setValue("");
            }

            if (u_bs_end_xz.getValue() && u_bs_start_xz.getValue()) {
                if (!DataTimeValidation()) {
                    $NG.alert("标书下载载止时间小于标书下载开始时间!");
                    u_bs_start_xz.setValue("");
                }
            }
        }, "p_form_zbhy.u_bs_start_xz");
        /**
         *@license:检测标书下载截止时间
         */
        useValuesChange(({ args }) => {
            //标书下载截至时间
            let flag = checkDate(u_bs_end_xz.getValue());
            if (!flag && u_bs_end_xz.getValue()) {
                $NG.alert("标书下载截至时间不能小于今天");
                u_bs_end_xz.setValue("");
            }

            if (u_bs_end_xz.getValue() && u_bs_start_xz.getValue()) {
                if (!DataTimeValidation()) {
                    $NG.alert("标书下载载止时间小于标书下载开始时间!");
                    u_bs_end_xz.setValue("");
                }
            }
        }, "p_form_zbhy.u_bs_end_xz");

        /**
         *@function:带出项目信息
         */
        function getPtInfoByPhid() {
            // console.log("进入getPtInfoByPhid", mstform.getItem("phid_pc").getValue());
            // if (mstform.getItem("phid_pc").getValue()) {
            //     $NG.execServer("projectSjbm", { phid: mstform.getItem("phid_pc").getValue() }, function (res) {
            //         console.log(res, "进入结果");
            //         const datas = JSON.parse(res.data)[0].extendObjects;
            //         $NG.updateState((updater) => {
            //             updater.data.p_form_zbhy.setProps({
            //                 u_sjh: datas.user_sjbm,
            //                 u_sjmc: datas.user_sjmc,
            //             });
            //         });
            //     });
            // }
        }

        function BidDateVerification() {
            //投标截至时间两时间校验
            return new Date(u_kb_dt.getValue()) >= new Date(u_tbjz_dt.getValue());
        }
        function DataTimeValidation() {
            //标书下载时间两时间校验
            return new Date(u_bs_end_xz.getValue()) > new Date(u_bs_start_xz.getValue());
        }
        //汇总
        function reduceNum(arr) {
            let total_amt = arr.reduce((value, item) => {
                value += (Number(item.u_ncg_qty) || 0) * (Number(item.u_kz_prcvat) || 0);
                return value;
            }, 0);

            // 计算控制价格，临时注释
            // $NG.updateState((updater) => {
            //     updater.data.p_form_zbhy.setProps({
            //         u_zbkzj: total_amt,
            //     });
            // });
        }

        useUpdateRows(({ args }) => {
            console.log("useUpdateRows");
            // 先判断有没有选择项目
            WLMXUpdateRows(args[0]);
            reduceNum(args[0]);
        }, "p_form_wlmx");

        function WLMXUpdateRows(rows) {
            let total = 0;
            rows.forEach((item) => {
                if (!item.u_yztj_prc) return;

                total += Number(item.u_yztj_prc);
            });
            mstform.getItem("u_zbkzj").setValue(total);
            if (rows.length < 1) {
                mstform.getItem("u_wlxl").setValue(null);
            }
            rows.forEach((item) => {
                console.log(item, "result获取id列表item");
                //设置控制含税金额
                item.u_kz_amtvat = (Number(item.u_kz_prcvat) || 0) * (Number(item.u_ncg_qty) || 0) * (1 + (Number(item.u_kz_tax) || 0));
                item.u_ck_amtvat = (Number(item.u_ck_prcvat) || 0) * (Number(item.u_ncg_qty) || 0);
                if (!item.u_item_no) return; //如果不存在phid_itemdata则不执行
                $NG.execServer("search_phiditemdata", { phid: item.u_item_no }, function (res) {
                    const datas = JSON.parse(res.data)[0].extendObjects;
                    console.log(datas, "search_phiditemdata");
                    item.itemid = datas.ps_resbase_phid;
                    item.itemno = datas.itemno;
                    item.itemname = datas.itemname;
                    item.spec = datas.spec;
                    item.msunit = datas.msunit_phid;
                    item.msunit_EXName = datas.msunit_name;
                    item.u_wlfl = datas.res_bs_phid;
                    item.u_wlfl_EXName = datas.res_bs_name;
                    const merged = [];
                    // 用于记录已经处理过的 u_item_no 和 itemno 组合
                    const processed = new Set();

                    rows.forEach((item) => {
                        const key = `${item.u_item_no}-${item.itemno}`;
                        console.log(key, merged, 111111);

                        if (!processed.has(key)) {
                            merged.push(item);
                            processed.add(key);
                        }
                    });
                    if (merged.length > 0) {
                        const result = merged.map((item) => ({ value: item.u_wlfl, label: item.u_wlfl_EXName }));
                        console.log(result, "result获取id列表,");
                        const uniqueData = [];
                        const seen = new Set();

                        result.forEach((item) => {
                            const key = `${item.value}-${item.label}`;
                            if (!seen.has(key)) {
                                uniqueData.push(item);
                                seen.add(key);
                            }
                        });
                        console.log("供应商uniqueData", uniqueData);
                        mstform.getItem("u_wlxl").setValue(uniqueData);
                        WLMX.refreshView();
                    }
                    // 提取所有元素的 u_wlfl_EXName 并拼接成字符串
                    WLMX.refreshView();
                });
                if (!item.u_section) {
                    //如果没有默认选择不区分标段
                    item.u_section = 1;
                    item.u_section_EXName = "不区分标段";
                }
            });
            WLMX.refreshView();
        }
        function JTpl() {
            try {
                WLMXUpdateRows(WLMX.getRows());
            } catch (error) { }

            // WLMX.getRows().forEach((item, index) => {

            // })
            if (mstform.getItem("u_wlxl").getValue()) {
                $NG.updateUI((updater, state) => {
                    updater.editGrid.p_form_supply.u_pl.setProps((e) => ({
                        ...e,
                        editor: {
                            ...e.editor,
                            // required: true,
                            // clientSqlFilter: { phid: 8570000000000004, },
                            clientSqlFilter: `phid in (${mstform.getItem("u_wlxl").getValue().join(",")})`,
                        },
                    }));
                });
            }
        }

        //////////////////////////////////////////////////p_form_supply//////////////////////////////////////////////////

        $NG.updateUI((updater) => {
            const fields = ["u_gys_phid"];
            fields.forEach((field) => {
                updater.editGrid.p_form_supply[field]?.setProps({
                    hidden: true, //隐藏
                    // required: true, //必输
                    // disabled: true, //只读
                });
            });
        });
        useUpdateRows(({ args }) => {
            const rows = args[0];
            if (mstform.getItem("u_wlxl").getValue()) {
            } else {
                $NG.alert("请先在物料明细表添加本次物料");
            }
            rows.forEach((item) => {
                console.log(item, "item获取供应商rowdata");

                if (!item.u_dwmc) return; // 如果不存在单位名称就不执行
                $NG.execServer("getSuppyInfo",{phid:item.u_dwmc}, (res)=>{
                    if(res.count == 0) return 
                    const datas = JSON.parse(res.data)[0].extendObjects
                    item.u_gyssx = datas.user_gyssx
                    item.u_gyszt = ["潜在库","可选库","限选库","业主推荐库","淘汰库","黑名单"][datas.user_sszt]
                    YQGYS.refreshView();
                })
                if (!item.u_pl) return;
                // 8570000000000004;
                y;
            });
        }, "p_form_supply");
        useDataIndexChange(({ args }) => {
            console.log("u_dwmc", args);
            let row = args[0];

            row.u_gys_phid = args[1].update.originValue.PhId;

            //赋值操作计算数量*单价=金额
            YQGYS.updateRow(row);
        }, "u_dwmc");
        useDataIndexChange(({ args }) => {
            let row = args[0];
            console.log(row, "11111???row");
        }, "u_pl");
    },
    function (editPage, { useAction }) {
        //编辑页面逻辑
    },
    function (listPage, { useValuesChange, useClick, useUpdateRow, useUpdateRows, useDataIndexChange, useBeforeClick }) { }
);

function checkDate(inputDateStr, toLock = false) {
    // 获取今天的日期并设置时间为00:00:00
    const today = new Date();
    today.setHours(0, 0, 0, 0); // 将今天的时间部分归零

    // 将传入的日期转换为 Date 对象
    const inputDate = new Date(inputDateStr);
    inputDate.setHours(0, 0, 0, 0); // 将输入日期的时间部分归零

    // 如果传入的日期无效，返回 false
    if (isNaN(inputDate)) {
        return false;
    }
    console.log(inputDate, "inputDate");
    console.log(today, "today");

    // 比较日期部分（不考虑时间）
    if (toLock) {
        return inputDate >= today;
    } else {
        return inputDate > today;
    }
}
